// Copyright 2016 The Periph Authors. All rights reserved.
// Use of this source code is governed under the Apache License, Version 2.0
// that can be found in the LICENSE file.

// Package ir defines InfraRed codes for use with a IR remote control.
package ir

// Key represents one of the supported key press.
type Key string

// Keys use the original UNDER_SCORES format even if not Go idiomatic to
// simplify the addition and removal of codes.
const (
	// The following was manually extracted from
	// http://www.lirc.org/api-docs/html/input__map_8inc_source.html
	KEY_0                        Key = "KEY_0"
	KEY_102ND                    Key = "KEY_102ND"
	KEY_10CHANNELSDOWN           Key = "KEY_10CHANNELSDOWN"
	KEY_10CHANNELSUP             Key = "KEY_10CHANNELSUP"
	KEY_1                        Key = "KEY_1"
	KEY_2                        Key = "KEY_2"
	KEY_3                        Key = "KEY_3"
	KEY_4                        Key = "KEY_4"
	KEY_5                        Key = "KEY_5"
	KEY_6                        Key = "KEY_6"
	KEY_7                        Key = "KEY_7"
	KEY_8                        Key = "KEY_8"
	KEY_9                        Key = "KEY_9"
	KEY_A                        Key = "KEY_A"
	KEY_AB                       Key = "KEY_AB"
	KEY_ADDRESSBOOK              Key = "KEY_ADDRESSBOOK"
	KEY_AGAIN                    Key = "KEY_AGAIN"
	KEY_ALS_TOGGLE               Key = "KEY_ALS_TOGGLE"
	KEY_ALTERASE                 Key = "KEY_ALTERASE"
	KEY_ANGLE                    Key = "KEY_ANGLE"
	KEY_APOSTROPHE               Key = "KEY_APOSTROPHE"
	KEY_APPSELECT                Key = "KEY_APPSELECT"
	KEY_ARCHIVE                  Key = "KEY_ARCHIVE"
	KEY_ATTENDANT_OFF            Key = "KEY_ATTENDANT_OFF"
	KEY_ATTENDANT_ON             Key = "KEY_ATTENDANT_ON"
	KEY_ATTENDANT_TOGGLE         Key = "KEY_ATTENDANT_TOGGLE"
	KEY_AUDIO                    Key = "KEY_AUDIO"
	KEY_AUX                      Key = "KEY_AUX"
	KEY_B                        Key = "KEY_B"
	KEY_BACK                     Key = "KEY_BACK"
	KEY_BACKSLASH                Key = "KEY_BACKSLASH"
	KEY_BACKSPACE                Key = "KEY_BACKSPACE"
	KEY_BASSBOOST                Key = "KEY_BASSBOOST"
	KEY_BATTERY                  Key = "KEY_BATTERY"
	KEY_BLUE                     Key = "KEY_BLUE"
	KEY_BLUETOOTH                Key = "KEY_BLUETOOTH"
	KEY_BOOKMARKS                Key = "KEY_BOOKMARKS"
	KEY_BREAK                    Key = "KEY_BREAK"
	KEY_BRIGHTNESS_AUTO          Key = "KEY_BRIGHTNESS_AUTO"
	KEY_BRIGHTNESS_CYCLE         Key = "KEY_BRIGHTNESS_CYCLE"
	KEY_BRIGHTNESSDOWN           Key = "KEY_BRIGHTNESSDOWN"
	KEY_BRIGHTNESS_MAX           Key = "KEY_BRIGHTNESS_MAX"
	KEY_BRIGHTNESS_MIN           Key = "KEY_BRIGHTNESS_MIN"
	KEY_BRIGHTNESSUP             Key = "KEY_BRIGHTNESSUP"
	KEY_BRL_DOT10                Key = "KEY_BRL_DOT10"
	KEY_BRL_DOT1                 Key = "KEY_BRL_DOT1"
	KEY_BRL_DOT2                 Key = "KEY_BRL_DOT2"
	KEY_BRL_DOT3                 Key = "KEY_BRL_DOT3"
	KEY_BRL_DOT4                 Key = "KEY_BRL_DOT4"
	KEY_BRL_DOT5                 Key = "KEY_BRL_DOT5"
	KEY_BRL_DOT6                 Key = "KEY_BRL_DOT6"
	KEY_BRL_DOT7                 Key = "KEY_BRL_DOT7"
	KEY_BRL_DOT8                 Key = "KEY_BRL_DOT8"
	KEY_BRL_DOT9                 Key = "KEY_BRL_DOT9"
	KEY_BUTTONCONFIG             Key = "KEY_BUTTONCONFIG"
	KEY_C                        Key = "KEY_C"
	KEY_CALC                     Key = "KEY_CALC"
	KEY_CALENDAR                 Key = "KEY_CALENDAR"
	KEY_CAMERA                   Key = "KEY_CAMERA"
	KEY_CAMERA_DOWN              Key = "KEY_CAMERA_DOWN"
	KEY_CAMERA_FOCUS             Key = "KEY_CAMERA_FOCUS"
	KEY_CAMERA_LEFT              Key = "KEY_CAMERA_LEFT"
	KEY_CAMERA_RIGHT             Key = "KEY_CAMERA_RIGHT"
	KEY_CAMERA_UP                Key = "KEY_CAMERA_UP"
	KEY_CAMERA_ZOOMIN            Key = "KEY_CAMERA_ZOOMIN"
	KEY_CAMERA_ZOOMOUT           Key = "KEY_CAMERA_ZOOMOUT"
	KEY_CANCEL                   Key = "KEY_CANCEL"
	KEY_CAPSLOCK                 Key = "KEY_CAPSLOCK"
	KEY_CD                       Key = "KEY_CD"
	KEY_CHANNEL                  Key = "KEY_CHANNEL"
	KEY_CHANNELDOWN              Key = "KEY_CHANNELDOWN"
	KEY_CHANNELUP                Key = "KEY_CHANNELUP"
	KEY_CHAT                     Key = "KEY_CHAT"
	KEY_CLEAR                    Key = "KEY_CLEAR"
	KEY_CLOSE                    Key = "KEY_CLOSE"
	KEY_CLOSECD                  Key = "KEY_CLOSECD"
	KEY_COFFEE                   Key = "KEY_COFFEE"
	KEY_COMMA                    Key = "KEY_COMMA"
	KEY_COMPOSE                  Key = "KEY_COMPOSE"
	KEY_COMPUTER                 Key = "KEY_COMPUTER"
	KEY_CONFIG                   Key = "KEY_CONFIG"
	KEY_CONNECT                  Key = "KEY_CONNECT"
	KEY_CONTEXT_MENU             Key = "KEY_CONTEXT_MENU"
	KEY_CONTROLPANEL             Key = "KEY_CONTROLPANEL"
	KEY_COPY                     Key = "KEY_COPY"
	KEY_CUT                      Key = "KEY_CUT"
	KEY_CYCLEWINDOWS             Key = "KEY_CYCLEWINDOWS"
	KEY_D                        Key = "KEY_D"
	KEY_DASHBOARD                Key = "KEY_DASHBOARD"
	KEY_DATABASE                 Key = "KEY_DATABASE"
	KEY_DEL_EOL                  Key = "KEY_DEL_EOL"
	KEY_DEL_EOS                  Key = "KEY_DEL_EOS"
	KEY_DELETE                   Key = "KEY_DELETE"
	KEY_DELETEFILE               Key = "KEY_DELETEFILE"
	KEY_DEL_LINE                 Key = "KEY_DEL_LINE"
	KEY_DIGITS                   Key = "KEY_DIGITS"
	KEY_DIRECTORY                Key = "KEY_DIRECTORY"
	KEY_DISPLAY_OFF              Key = "KEY_DISPLAY_OFF"
	KEY_DISPLAYTOGGLE            Key = "KEY_DISPLAYTOGGLE"
	KEY_DOCUMENTS                Key = "KEY_DOCUMENTS"
	KEY_DOLLAR                   Key = "KEY_DOLLAR"
	KEY_DOT                      Key = "KEY_DOT"
	KEY_DOWN                     Key = "KEY_DOWN"
	KEY_DVD                      Key = "KEY_DVD"
	KEY_E                        Key = "KEY_E"
	KEY_EDIT                     Key = "KEY_EDIT"
	KEY_EDITOR                   Key = "KEY_EDITOR"
	KEY_EJECTCD                  Key = "KEY_EJECTCD"
	KEY_EJECTCLOSECD             Key = "KEY_EJECTCLOSECD"
	KEY_EMAIL                    Key = "KEY_EMAIL"
	KEY_END                      Key = "KEY_END"
	KEY_ENTER                    Key = "KEY_ENTER"
	KEY_EPG                      Key = "KEY_EPG"
	KEY_EQUAL                    Key = "KEY_EQUAL"
	KEY_ESC                      Key = "KEY_ESC"
	KEY_EURO                     Key = "KEY_EURO"
	KEY_EXIT                     Key = "KEY_EXIT"
	KEY_F10                      Key = "KEY_F10"
	KEY_F11                      Key = "KEY_F11"
	KEY_F12                      Key = "KEY_F12"
	KEY_F13                      Key = "KEY_F13"
	KEY_F14                      Key = "KEY_F14"
	KEY_F15                      Key = "KEY_F15"
	KEY_F1                       Key = "KEY_F1"
	KEY_F16                      Key = "KEY_F16"
	KEY_F17                      Key = "KEY_F17"
	KEY_F18                      Key = "KEY_F18"
	KEY_F19                      Key = "KEY_F19"
	KEY_F20                      Key = "KEY_F20"
	KEY_F21                      Key = "KEY_F21"
	KEY_F22                      Key = "KEY_F22"
	KEY_F23                      Key = "KEY_F23"
	KEY_F24                      Key = "KEY_F24"
	KEY_F2                       Key = "KEY_F2"
	KEY_F                        Key = "KEY_F"
	KEY_F3                       Key = "KEY_F3"
	KEY_F4                       Key = "KEY_F4"
	KEY_F5                       Key = "KEY_F5"
	KEY_F6                       Key = "KEY_F6"
	KEY_F7                       Key = "KEY_F7"
	KEY_F8                       Key = "KEY_F8"
	KEY_F9                       Key = "KEY_F9"
	KEY_FASTFORWARD              Key = "KEY_FASTFORWARD"
	KEY_FAVORITES                Key = "KEY_FAVORITES"
	KEY_FILE                     Key = "KEY_FILE"
	KEY_FINANCE                  Key = "KEY_FINANCE"
	KEY_FIND                     Key = "KEY_FIND"
	KEY_FIRST                    Key = "KEY_FIRST"
	KEY_FN                       Key = "KEY_FN"
	KEY_FN_1                     Key = "KEY_FN_1"
	KEY_FN_2                     Key = "KEY_FN_2"
	KEY_FN_B                     Key = "KEY_FN_B"
	KEY_FN_D                     Key = "KEY_FN_D"
	KEY_FN_E                     Key = "KEY_FN_E"
	KEY_FN_ESC                   Key = "KEY_FN_ESC"
	KEY_FN_F                     Key = "KEY_FN_F"
	KEY_FN_F10                   Key = "KEY_FN_F10"
	KEY_FN_F1                    Key = "KEY_FN_F1"
	KEY_FN_F11                   Key = "KEY_FN_F11"
	KEY_FN_F12                   Key = "KEY_FN_F12"
	KEY_FN_F2                    Key = "KEY_FN_F2"
	KEY_FN_F3                    Key = "KEY_FN_F3"
	KEY_FN_F4                    Key = "KEY_FN_F4"
	KEY_FN_F5                    Key = "KEY_FN_F5"
	KEY_FN_F6                    Key = "KEY_FN_F6"
	KEY_FN_F7                    Key = "KEY_FN_F7"
	KEY_FN_F8                    Key = "KEY_FN_F8"
	KEY_FN_F9                    Key = "KEY_FN_F9"
	KEY_FN_S                     Key = "KEY_FN_S"
	KEY_FORWARD                  Key = "KEY_FORWARD"
	KEY_FORWARDMAIL              Key = "KEY_FORWARDMAIL"
	KEY_FRAMEBACK                Key = "KEY_FRAMEBACK"
	KEY_FRAMEFORWARD             Key = "KEY_FRAMEFORWARD"
	KEY_FRONT                    Key = "KEY_FRONT"
	KEY_G                        Key = "KEY_G"
	KEY_GAMES                    Key = "KEY_GAMES"
	KEY_GOTO                     Key = "KEY_GOTO"
	KEY_GRAPHICSEDITOR           Key = "KEY_GRAPHICSEDITOR"
	KEY_GRAVE                    Key = "KEY_GRAVE"
	KEY_GREEN                    Key = "KEY_GREEN"
	KEY_H                        Key = "KEY_H"
	KEY_HANGEUL                  Key = "KEY_HANGEUL"
	KEY_HANJA                    Key = "KEY_HANJA"
	KEY_HELP                     Key = "KEY_HELP"
	KEY_HENKAN                   Key = "KEY_HENKAN"
	KEY_HIRAGANA                 Key = "KEY_HIRAGANA"
	KEY_HOME                     Key = "KEY_HOME"
	KEY_HOMEPAGE                 Key = "KEY_HOMEPAGE"
	KEY_HP                       Key = "KEY_HP"
	KEY_I                        Key = "KEY_I"
	KEY_IMAGES                   Key = "KEY_IMAGES"
	KEY_INFO                     Key = "KEY_INFO"
	KEY_INSERT                   Key = "KEY_INSERT"
	KEY_INS_LINE                 Key = "KEY_INS_LINE"
	KEY_ISO                      Key = "KEY_ISO"
	KEY_J                        Key = "KEY_J"
	KEY_JOURNAL                  Key = "KEY_JOURNAL"
	KEY_K                        Key = "KEY_K"
	KEY_KATAKANA                 Key = "KEY_KATAKANA"
	KEY_KATAKANAHIRAGANA         Key = "KEY_KATAKANAHIRAGANA"
	KEY_KBDILLUMDOWN             Key = "KEY_KBDILLUMDOWN"
	KEY_KBDILLUMTOGGLE           Key = "KEY_KBDILLUMTOGGLE"
	KEY_KBDILLUMUP               Key = "KEY_KBDILLUMUP"
	KEY_KBDINPUTASSIST_ACCEPT    Key = "KEY_KBDINPUTASSIST_ACCEPT"
	KEY_KBDINPUTASSIST_CANCEL    Key = "KEY_KBDINPUTASSIST_CANCEL"
	KEY_KBDINPUTASSIST_NEXT      Key = "KEY_KBDINPUTASSIST_NEXT"
	KEY_KBDINPUTASSIST_NEXTGROUP Key = "KEY_KBDINPUTASSIST_NEXTGROUP"
	KEY_KBDINPUTASSIST_PREV      Key = "KEY_KBDINPUTASSIST_PREV"
	KEY_KBDINPUTASSIST_PREVGROUP Key = "KEY_KBDINPUTASSIST_PREVGROUP"
	KEY_KEYBOARD                 Key = "KEY_KEYBOARD"
	KEY_KP0                      Key = "KEY_KP0"
	KEY_KP1                      Key = "KEY_KP1"
	KEY_KP2                      Key = "KEY_KP2"
	KEY_KP3                      Key = "KEY_KP3"
	KEY_KP4                      Key = "KEY_KP4"
	KEY_KP5                      Key = "KEY_KP5"
	KEY_KP6                      Key = "KEY_KP6"
	KEY_KP7                      Key = "KEY_KP7"
	KEY_KP8                      Key = "KEY_KP8"
	KEY_KP9                      Key = "KEY_KP9"
	KEY_KPASTERISK               Key = "KEY_KPASTERISK"
	KEY_KPCOMMA                  Key = "KEY_KPCOMMA"
	KEY_KPDOT                    Key = "KEY_KPDOT"
	KEY_KPENTER                  Key = "KEY_KPENTER"
	KEY_KPEQUAL                  Key = "KEY_KPEQUAL"
	KEY_KPJPCOMMA                Key = "KEY_KPJPCOMMA"
	KEY_KPLEFTPAREN              Key = "KEY_KPLEFTPAREN"
	KEY_KPMINUS                  Key = "KEY_KPMINUS"
	KEY_KPPLUS                   Key = "KEY_KPPLUS"
	KEY_KPPLUSMINUS              Key = "KEY_KPPLUSMINUS"
	KEY_KPRIGHTPAREN             Key = "KEY_KPRIGHTPAREN"
	KEY_KPSLASH                  Key = "KEY_KPSLASH"
	KEY_L                        Key = "KEY_L"
	KEY_LANGUAGE                 Key = "KEY_LANGUAGE"
	KEY_LAST                     Key = "KEY_LAST"
	KEY_LEFT                     Key = "KEY_LEFT"
	KEY_LEFTALT                  Key = "KEY_LEFTALT"
	KEY_LEFTBRACE                Key = "KEY_LEFTBRACE"
	KEY_LEFTCTRL                 Key = "KEY_LEFTCTRL"
	KEY_LEFTMETA                 Key = "KEY_LEFTMETA"
	KEY_LEFTSHIFT                Key = "KEY_LEFTSHIFT"
	KEY_LIGHTS_TOGGLE            Key = "KEY_LIGHTS_TOGGLE"
	KEY_LINEFEED                 Key = "KEY_LINEFEED"
	KEY_LIST                     Key = "KEY_LIST"
	KEY_LOGOFF                   Key = "KEY_LOGOFF"
	KEY_M                        Key = "KEY_M"
	KEY_MACRO                    Key = "KEY_MACRO"
	KEY_MAIL                     Key = "KEY_MAIL"
	KEY_MAX                      Key = "KEY_MAX"
	KEY_MEDIA                    Key = "KEY_MEDIA"
	KEY_MEDIA_REPEAT             Key = "KEY_MEDIA_REPEAT"
	KEY_MEMO                     Key = "KEY_MEMO"
	KEY_MENU                     Key = "KEY_MENU"
	KEY_MESSENGER                Key = "KEY_MESSENGER"
	KEY_MHP                      Key = "KEY_MHP"
	KEY_MICMUTE                  Key = "KEY_MICMUTE"
	KEY_MINUS                    Key = "KEY_MINUS"
	KEY_MODE                     Key = "KEY_MODE"
	KEY_MOVE                     Key = "KEY_MOVE"
	KEY_MP3                      Key = "KEY_MP3"
	KEY_MSDOS                    Key = "KEY_MSDOS"
	KEY_MUHENKAN                 Key = "KEY_MUHENKAN"
	KEY_MUTE                     Key = "KEY_MUTE"
	KEY_N                        Key = "KEY_N"
	KEY_NEW                      Key = "KEY_NEW"
	KEY_NEWS                     Key = "KEY_NEWS"
	KEY_NEXT                     Key = "KEY_NEXT"
	KEY_NEXTSONG                 Key = "KEY_NEXTSONG"
	KEY_NUMERIC_0                Key = "KEY_NUMERIC_0"
	KEY_NUMERIC_1                Key = "KEY_NUMERIC_1"
	KEY_NUMERIC_2                Key = "KEY_NUMERIC_2"
	KEY_NUMERIC_3                Key = "KEY_NUMERIC_3"
	KEY_NUMERIC_4                Key = "KEY_NUMERIC_4"
	KEY_NUMERIC_5                Key = "KEY_NUMERIC_5"
	KEY_NUMERIC_6                Key = "KEY_NUMERIC_6"
	KEY_NUMERIC_7                Key = "KEY_NUMERIC_7"
	KEY_NUMERIC_8                Key = "KEY_NUMERIC_8"
	KEY_NUMERIC_9                Key = "KEY_NUMERIC_9"
	KEY_NUMERIC_A                Key = "KEY_NUMERIC_A"
	KEY_NUMERIC_B                Key = "KEY_NUMERIC_B"
	KEY_NUMERIC_C                Key = "KEY_NUMERIC_C"
	KEY_NUMERIC_D                Key = "KEY_NUMERIC_D"
	KEY_NUMERIC_POUND            Key = "KEY_NUMERIC_POUND"
	KEY_NUMERIC_STAR             Key = "KEY_NUMERIC_STAR"
	KEY_NUMLOCK                  Key = "KEY_NUMLOCK"
	KEY_O                        Key = "KEY_O"
	KEY_OK                       Key = "KEY_OK"
	KEY_OPEN                     Key = "KEY_OPEN"
	KEY_OPTION                   Key = "KEY_OPTION"
	KEY_P                        Key = "KEY_P"
	KEY_PAGEDOWN                 Key = "KEY_PAGEDOWN"
	KEY_PAGEUP                   Key = "KEY_PAGEUP"
	KEY_PASTE                    Key = "KEY_PASTE"
	KEY_PAUSE                    Key = "KEY_PAUSE"
	KEY_PAUSECD                  Key = "KEY_PAUSECD"
	KEY_PC                       Key = "KEY_PC"
	KEY_PHONE                    Key = "KEY_PHONE"
	KEY_PLAY                     Key = "KEY_PLAY"
	KEY_PLAYCD                   Key = "KEY_PLAYCD"
	KEY_PLAYER                   Key = "KEY_PLAYER"
	KEY_PLAYPAUSE                Key = "KEY_PLAYPAUSE"
	KEY_POWER                    Key = "KEY_POWER"
	KEY_POWER2                   Key = "KEY_POWER2"
	KEY_PRESENTATION             Key = "KEY_PRESENTATION"
	KEY_PREVIOUS                 Key = "KEY_PREVIOUS"
	KEY_PREVIOUSSONG             Key = "KEY_PREVIOUSSONG"
	KEY_PRINT                    Key = "KEY_PRINT"
	KEY_PROG1                    Key = "KEY_PROG1"
	KEY_PROG2                    Key = "KEY_PROG2"
	KEY_PROG3                    Key = "KEY_PROG3"
	KEY_PROG4                    Key = "KEY_PROG4"
	KEY_PROGRAM                  Key = "KEY_PROGRAM"
	KEY_PROPS                    Key = "KEY_PROPS"
	KEY_PVR                      Key = "KEY_PVR"
	KEY_Q                        Key = "KEY_Q"
	KEY_QUESTION                 Key = "KEY_QUESTION"
	KEY_R                        Key = "KEY_R"
	KEY_RADIO                    Key = "KEY_RADIO"
	KEY_RECORD                   Key = "KEY_RECORD"
	KEY_RED                      Key = "KEY_RED"
	KEY_REDO                     Key = "KEY_REDO"
	KEY_REFRESH                  Key = "KEY_REFRESH"
	KEY_REPLY                    Key = "KEY_REPLY"
	KEY_RESERVED                 Key = "KEY_RESERVED"
	KEY_RESTART                  Key = "KEY_RESTART"
	KEY_REWIND                   Key = "KEY_REWIND"
	KEY_RFKILL                   Key = "KEY_RFKILL"
	KEY_RIGHT                    Key = "KEY_RIGHT"
	KEY_RIGHTALT                 Key = "KEY_RIGHTALT"
	KEY_RIGHTBRACE               Key = "KEY_RIGHTBRACE"
	KEY_RIGHTCTRL                Key = "KEY_RIGHTCTRL"
	KEY_RIGHTMETA                Key = "KEY_RIGHTMETA"
	KEY_RIGHTSHIFT               Key = "KEY_RIGHTSHIFT"
	KEY_RO                       Key = "KEY_RO"
	KEY_ROTATE_DISPLAY           Key = "KEY_ROTATE_DISPLAY"
	KEY_S                        Key = "KEY_S"
	KEY_SAT                      Key = "KEY_SAT"
	KEY_SAT2                     Key = "KEY_SAT2"
	KEY_SAVE                     Key = "KEY_SAVE"
	KEY_SCALE                    Key = "KEY_SCALE"
	KEY_SCREEN                   Key = "KEY_SCREEN"
	KEY_SCREENSAVER              Key = "KEY_SCREENSAVER"
	KEY_SCROLLDOWN               Key = "KEY_SCROLLDOWN"
	KEY_SCROLLLOCK               Key = "KEY_SCROLLLOCK"
	KEY_SCROLLUP                 Key = "KEY_SCROLLUP"
	KEY_SEARCH                   Key = "KEY_SEARCH"
	KEY_SELECT                   Key = "KEY_SELECT"
	KEY_SEMICOLON                Key = "KEY_SEMICOLON"
	KEY_SEND                     Key = "KEY_SEND"
	KEY_SENDFILE                 Key = "KEY_SENDFILE"
	KEY_SETUP                    Key = "KEY_SETUP"
	KEY_SHOP                     Key = "KEY_SHOP"
	KEY_SHUFFLE                  Key = "KEY_SHUFFLE"
	KEY_SLASH                    Key = "KEY_SLASH"
	KEY_SLEEP                    Key = "KEY_SLEEP"
	KEY_SLOW                     Key = "KEY_SLOW"
	KEY_SOUND                    Key = "KEY_SOUND"
	KEY_SPACE                    Key = "KEY_SPACE"
	KEY_SPELLCHECK               Key = "KEY_SPELLCHECK"
	KEY_SPORT                    Key = "KEY_SPORT"
	KEY_SPREADSHEET              Key = "KEY_SPREADSHEET"
	KEY_STOP                     Key = "KEY_STOP"
	KEY_STOPCD                   Key = "KEY_STOPCD"
	KEY_SUBTITLE                 Key = "KEY_SUBTITLE"
	KEY_SUSPEND                  Key = "KEY_SUSPEND"
	KEY_SWITCHVIDEOMODE          Key = "KEY_SWITCHVIDEOMODE"
	KEY_SYSRQ                    Key = "KEY_SYSRQ"
	KEY_T                        Key = "KEY_T"
	KEY_TAB                      Key = "KEY_TAB"
	KEY_TAPE                     Key = "KEY_TAPE"
	KEY_TASKMANAGER              Key = "KEY_TASKMANAGER"
	KEY_TEEN                     Key = "KEY_TEEN"
	KEY_TEXT                     Key = "KEY_TEXT"
	KEY_TIME                     Key = "KEY_TIME"
	KEY_TITLE                    Key = "KEY_TITLE"
	KEY_TOUCHPAD_OFF             Key = "KEY_TOUCHPAD_OFF"
	KEY_TOUCHPAD_ON              Key = "KEY_TOUCHPAD_ON"
	KEY_TOUCHPAD_TOGGLE          Key = "KEY_TOUCHPAD_TOGGLE"
	KEY_TUNER                    Key = "KEY_TUNER"
	KEY_TV                       Key = "KEY_TV"
	KEY_TV2                      Key = "KEY_TV2"
	KEY_TWEN                     Key = "KEY_TWEN"
	KEY_U                        Key = "KEY_U"
	KEY_UNDO                     Key = "KEY_UNDO"
	KEY_UNKNOWN                  Key = "KEY_UNKNOWN"
	KEY_UP                       Key = "KEY_UP"
	KEY_UWB                      Key = "KEY_UWB"
	KEY_V                        Key = "KEY_V"
	KEY_VCR                      Key = "KEY_VCR"
	KEY_VCR2                     Key = "KEY_VCR2"
	KEY_VENDOR                   Key = "KEY_VENDOR"
	KEY_VIDEO                    Key = "KEY_VIDEO"
	KEY_VIDEO_NEXT               Key = "KEY_VIDEO_NEXT"
	KEY_VIDEOPHONE               Key = "KEY_VIDEOPHONE"
	KEY_VIDEO_PREV               Key = "KEY_VIDEO_PREV"
	KEY_VOICECOMMAND             Key = "KEY_VOICECOMMAND"
	KEY_VOICEMAIL                Key = "KEY_VOICEMAIL"
	KEY_VOLUMEDOWN               Key = "KEY_VOLUMEDOWN"
	KEY_VOLUMEUP                 Key = "KEY_VOLUMEUP"
	KEY_W                        Key = "KEY_W"
	KEY_WAKEUP                   Key = "KEY_WAKEUP"
	KEY_WLAN                     Key = "KEY_WLAN"
	KEY_WORDPROCESSOR            Key = "KEY_WORDPROCESSOR"
	KEY_WPS_BUTTON               Key = "KEY_WPS_BUTTON"
	KEY_WWAN                     Key = "KEY_WWAN"
	KEY_WWW                      Key = "KEY_WWW"
	KEY_X                        Key = "KEY_X"
	KEY_XFER                     Key = "KEY_XFER"
	KEY_Y                        Key = "KEY_Y"
	KEY_YELLOW                   Key = "KEY_YELLOW"
	KEY_YEN                      Key = "KEY_YEN"
	KEY_Z                        Key = "KEY_Z"
	KEY_ZENKAKUHANKAKU           Key = "KEY_ZENKAKUHANKAKU"
	KEY_ZOOM                     Key = "KEY_ZOOM"
	KEY_ZOOMIN                   Key = "KEY_ZOOMIN"
	KEY_ZOOMOUT                  Key = "KEY_ZOOMOUT"
	KEY_ZOOMRESET                Key = "KEY_ZOOMRESET"
	BTN_0                        Key = "BTN_0"
	BTN_1                        Key = "BTN_1"
	BTN_2                        Key = "BTN_2"
	BTN_3                        Key = "BTN_3"
	BTN_4                        Key = "BTN_4"
	BTN_5                        Key = "BTN_5"
	BTN_6                        Key = "BTN_6"
	BTN_7                        Key = "BTN_7"
	BTN_8                        Key = "BTN_8"
	BTN_9                        Key = "BTN_9"
	BTN_BACK                     Key = "BTN_BACK"
	BTN_BASE                     Key = "BTN_BASE"
	BTN_BASE2                    Key = "BTN_BASE2"
	BTN_BASE3                    Key = "BTN_BASE3"
	BTN_BASE4                    Key = "BTN_BASE4"
	BTN_BASE5                    Key = "BTN_BASE5"
	BTN_BASE6                    Key = "BTN_BASE6"
	BTN_C                        Key = "BTN_C"
	BTN_DEAD                     Key = "BTN_DEAD"
	BTN_DIGI                     Key = "BTN_DIGI"
	BTN_DPAD_DOWN                Key = "BTN_DPAD_DOWN"
	BTN_DPAD_LEFT                Key = "BTN_DPAD_LEFT"
	BTN_DPAD_RIGHT               Key = "BTN_DPAD_RIGHT"
	BTN_DPAD_UP                  Key = "BTN_DPAD_UP"
	BTN_EAST                     Key = "BTN_EAST"
	BTN_EXTRA                    Key = "BTN_EXTRA"
	BTN_FORWARD                  Key = "BTN_FORWARD"
	BTN_GAMEPAD                  Key = "BTN_GAMEPAD"
	BTN_GEAR_DOWN                Key = "BTN_GEAR_DOWN"
	BTN_GEAR_UP                  Key = "BTN_GEAR_UP"
	BTN_JOYSTICK                 Key = "BTN_JOYSTICK"
	BTN_LEFT                     Key = "BTN_LEFT"
	BTN_MIDDLE                   Key = "BTN_MIDDLE"
	BTN_MISC                     Key = "BTN_MISC"
	BTN_MODE                     Key = "BTN_MODE"
	BTN_MOUSE                    Key = "BTN_MOUSE"
	BTN_NORTH                    Key = "BTN_NORTH"
	BTN_PINKIE                   Key = "BTN_PINKIE"
	BTN_RIGHT                    Key = "BTN_RIGHT"
	BTN_SELECT                   Key = "BTN_SELECT"
	BTN_SIDE                     Key = "BTN_SIDE"
	BTN_SOUTH                    Key = "BTN_SOUTH"
	BTN_START                    Key = "BTN_START"
	BTN_STYLUS                   Key = "BTN_STYLUS"
	BTN_STYLUS2                  Key = "BTN_STYLUS2"
	BTN_TASK                     Key = "BTN_TASK"
	BTN_THUMB                    Key = "BTN_THUMB"
	BTN_THUMB2                   Key = "BTN_THUMB2"
	BTN_THUMBL                   Key = "BTN_THUMBL"
	BTN_THUMBR                   Key = "BTN_THUMBR"
	BTN_TL                       Key = "BTN_TL"
	BTN_TL2                      Key = "BTN_TL2"
	BTN_TOOL_AIRBRUSH            Key = "BTN_TOOL_AIRBRUSH"
	BTN_TOOL_BRUSH               Key = "BTN_TOOL_BRUSH"
	BTN_TOOL_DOUBLETAP           Key = "BTN_TOOL_DOUBLETAP"
	BTN_TOOL_FINGER              Key = "BTN_TOOL_FINGER"
	BTN_TOOL_LENS                Key = "BTN_TOOL_LENS"
	BTN_TOOL_MOUSE               Key = "BTN_TOOL_MOUSE"
	BTN_TOOL_PEN                 Key = "BTN_TOOL_PEN"
	BTN_TOOL_PENCIL              Key = "BTN_TOOL_PENCIL"
	BTN_TOOL_QUADTAP             Key = "BTN_TOOL_QUADTAP"
	BTN_TOOL_QUINTTAP            Key = "BTN_TOOL_QUINTTAP"
	BTN_TOOL_RUBBER              Key = "BTN_TOOL_RUBBER"
	BTN_TOOL_TRIPLETAP           Key = "BTN_TOOL_TRIPLETAP"
	BTN_TOP                      Key = "BTN_TOP"
	BTN_TOP2                     Key = "BTN_TOP2"
	BTN_TOUCH                    Key = "BTN_TOUCH"
	BTN_TR                       Key = "BTN_TR"
	BTN_TR2                      Key = "BTN_TR2"
	BTN_TRIGGER                  Key = "BTN_TRIGGER"
	BTN_TRIGGER_HAPPY            Key = "BTN_TRIGGER_HAPPY"
	BTN_TRIGGER_HAPPY10          Key = "BTN_TRIGGER_HAPPY10"
	BTN_TRIGGER_HAPPY1           Key = "BTN_TRIGGER_HAPPY1"
	BTN_TRIGGER_HAPPY11          Key = "BTN_TRIGGER_HAPPY11"
	BTN_TRIGGER_HAPPY12          Key = "BTN_TRIGGER_HAPPY12"
	BTN_TRIGGER_HAPPY13          Key = "BTN_TRIGGER_HAPPY13"
	BTN_TRIGGER_HAPPY14          Key = "BTN_TRIGGER_HAPPY14"
	BTN_TRIGGER_HAPPY15          Key = "BTN_TRIGGER_HAPPY15"
	BTN_TRIGGER_HAPPY16          Key = "BTN_TRIGGER_HAPPY16"
	BTN_TRIGGER_HAPPY17          Key = "BTN_TRIGGER_HAPPY17"
	BTN_TRIGGER_HAPPY18          Key = "BTN_TRIGGER_HAPPY18"
	BTN_TRIGGER_HAPPY19          Key = "BTN_TRIGGER_HAPPY19"
	BTN_TRIGGER_HAPPY20          Key = "BTN_TRIGGER_HAPPY20"
	BTN_TRIGGER_HAPPY2           Key = "BTN_TRIGGER_HAPPY2"
	BTN_TRIGGER_HAPPY21          Key = "BTN_TRIGGER_HAPPY21"
	BTN_TRIGGER_HAPPY22          Key = "BTN_TRIGGER_HAPPY22"
	BTN_TRIGGER_HAPPY23          Key = "BTN_TRIGGER_HAPPY23"
	BTN_TRIGGER_HAPPY24          Key = "BTN_TRIGGER_HAPPY24"
	BTN_TRIGGER_HAPPY25          Key = "BTN_TRIGGER_HAPPY25"
	BTN_TRIGGER_HAPPY26          Key = "BTN_TRIGGER_HAPPY26"
	BTN_TRIGGER_HAPPY27          Key = "BTN_TRIGGER_HAPPY27"
	BTN_TRIGGER_HAPPY28          Key = "BTN_TRIGGER_HAPPY28"
	BTN_TRIGGER_HAPPY29          Key = "BTN_TRIGGER_HAPPY29"
	BTN_TRIGGER_HAPPY30          Key = "BTN_TRIGGER_HAPPY30"
	BTN_TRIGGER_HAPPY3           Key = "BTN_TRIGGER_HAPPY3"
	BTN_TRIGGER_HAPPY31          Key = "BTN_TRIGGER_HAPPY31"
	BTN_TRIGGER_HAPPY32          Key = "BTN_TRIGGER_HAPPY32"
	BTN_TRIGGER_HAPPY33          Key = "BTN_TRIGGER_HAPPY33"
	BTN_TRIGGER_HAPPY34          Key = "BTN_TRIGGER_HAPPY34"
	BTN_TRIGGER_HAPPY35          Key = "BTN_TRIGGER_HAPPY35"
	BTN_TRIGGER_HAPPY36          Key = "BTN_TRIGGER_HAPPY36"
	BTN_TRIGGER_HAPPY37          Key = "BTN_TRIGGER_HAPPY37"
	BTN_TRIGGER_HAPPY38          Key = "BTN_TRIGGER_HAPPY38"
	BTN_TRIGGER_HAPPY39          Key = "BTN_TRIGGER_HAPPY39"
	BTN_TRIGGER_HAPPY40          Key = "BTN_TRIGGER_HAPPY40"
	BTN_TRIGGER_HAPPY4           Key = "BTN_TRIGGER_HAPPY4"
	BTN_TRIGGER_HAPPY5           Key = "BTN_TRIGGER_HAPPY5"
	BTN_TRIGGER_HAPPY6           Key = "BTN_TRIGGER_HAPPY6"
	BTN_TRIGGER_HAPPY7           Key = "BTN_TRIGGER_HAPPY7"
	BTN_TRIGGER_HAPPY8           Key = "BTN_TRIGGER_HAPPY8"
	BTN_TRIGGER_HAPPY9           Key = "BTN_TRIGGER_HAPPY9"
	BTN_WEST                     Key = "BTN_WEST"
	BTN_WHEEL                    Key = "BTN_WHEEL"
	BTN_Z                        Key = "BTN_Z"

	// The following came for the author's personal remote.
	KEY_100PLUS Key = "KEY_100PLUS"
	KEY_200PLUS Key = "KEY_200PLUS"
	KEY_EQ      Key = "KEY_EQ"
)

// Message is one received message.
type Message struct {
	Key        Key
	RemoteType string // Remote type name
	Repeat     bool   // true if the button press is a repeated key press; i.e. the user holds the button
}

// Conn defines an infrared receiver and emitter.
type Conn interface {
	// Channel returns a channel that is used to listen to new messages capted by
	// the IR receiver. It will be closed when the device is closed.
	Channel() <-chan Message
	// Emit emits a key press.
	Emit(remote string, key Key) error
}
